✒️ 2025-05-15 15:49 내용 수정
수제비 2024 정보처리기사 필기 5판 1권의 내용을 정리
TCPSchool의 내용을 정리
프로그램 산술식이나 연산식을 포현하고 처리하기 위한 기호
연산자 종류와 우선순위
- 수학에서 연산의 우선 순위가 있는 것처럼 C에서도 연산에 우선순위와 결합 방향이 있다.
- 복잡한 계산에선 우선순위를 헷갈려서 의도한 결과가 아닌 다른 결과가 나올 수 있어 유의해야 한다.
| 순위 |
종류 |
연산자 |
결합방향 |
| 1 |
후위 증감 연산자 |
++, -- |
왼->오 |
|
함수 호출 |
() |
왼->오 |
|
첨자 연산 |
[] |
왼->오 |
|
참조에 의한 선택 |
. |
왼->오 |
|
포인터를 통한 선택 |
-> |
왼->오 |
| 2 |
논리 NOT 연산자 |
! |
오->왼 |
|
비트 NOT 연산자 |
~ |
오->왼 |
|
양의 부호 |
+ |
오->왼 |
|
음의 부호 |
- |
오->왼 |
|
전위 증가 연산자 |
++ |
오->왼 |
|
전위 감소 연산자 |
-- |
오->왼 |
|
타입 변환 연산자 |
(타입) |
오->왼 |
|
참조 연산 |
* |
오->왼 |
|
주소 연산 |
& |
오->왼 |
|
크기 |
size of |
오->왼 |
| 3 |
곱셈 연산자 |
* |
왼->오 |
|
나눗셈 연산자 |
/ |
왼->오 |
|
나머지 연산자 |
% |
왼->오 |
| 4 |
덧셈 연산자 |
+ |
왼->오 |
|
뺄셈 연산자 |
- |
왼->오 |
| 5 |
비트 왼쪽 시프트 |
<< |
왼->오 |
|
부호 비트 확장 오른쪽 시프트 |
>> |
왼->오 |
| 6 |
관계 연산자 |
< |
왼->오 |
|
관계 연산자 |
<= |
왼->오 |
|
관계 연산자 |
> |
왼->오 |
|
관계 연산자 |
>= |
왼->오 |
| 7 |
관계 연산자 |
== |
왼->오 |
|
관계 연산자 |
!= |
왼->오 |
|
비트 AND 연산자 |
& |
왼->오 |
|
비트 XOR 연산자 |
^ |
왼->오 |
|
비트OR 연산자 |
| |
왼->오 |
|
논리 AND 연산자 |
&& |
왼->오 |
|
논리 OR 연산자 |
|| |
왼->오 |
|
삼항 조건 연산자 |
? : |
오->왼 |
|
대입/복합 대입 연산자 |
=, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |= |
오->왼 |
|
쉼표 연산자 |
, |
왼->오 |
산술 연산자
- 기본적인 사칙 연산자
- 결합 방향 : 왼쪽 -> 오른쪽
| 산술 연산자 |
설명 |
| + |
덧셈 |
| - |
뺄셈 |
| * |
곱셈 |
| / |
나눗셈 결과를 반환 |
| % |
나눗셈 후 나머지를 반환 |
대입 연산자
- 변수(variable)에 값을 대입할 때 사용
- 결합 방향 : 오른쪽 -> 왼쪽
- 오른쪽의 결과 값을 왼쪽에 대입 하는 걸 잊지 말자.
- 왼쪽 데이터 타입 공간에 오른쪽 데이터 값을 넣는다!
| 대입 연산자 |
설명 |
| A = B |
A에 B 대입 |
| A += B |
A + B , 결과를 A에 대입 |
| A -= B |
A - B , 결과를 A에 대입 |
| A *= B |
A * B , 결과를 A에 대입 |
| A /= B |
A / B , 결과를 A에 대입 |
| A %= B |
A % B , 결과를 A에 대입 |
a = a + 1;
a += 1; // 둘은 같은 역할을 한다.
비교 연산자
- 변수나 상수 값을 비교하여 참과 거짓을 판별하는 연산자
- 항상 논리형 데이터(true, false)로 값을 반환한다.
- 항상 왼쪽에 있는 값을 기준으로 판단한다.
| 비교연산자 |
설명 |
| A > B |
A가 B보다 크다 |
| A < B |
A가 B보다 작다 |
| A >= B |
A가 B보다 크거나 같다 |
| A <= B |
A가 B보다 작거나 같다 |
| A == B |
A와 B가 같다 |
| A != B |
A와 B가 다르다 |
증감 연산자
- 피연산자(연산을 받는 항)를 +1 혹은 -1 할 때 사용한다.
- 피연산자를 1개만 사용한다.
- 자주 헷갈리니 순서를 잘 따져서 보자!
| 증감 연산자 |
설명 |
| ++n |
n 값을 1 증가시키고 연산 진행 |
| n++ |
연산 진행 후 n 값을 1 증가시킴 |
| --n |
n 값을 1 감소시키고 연산 진행 |
| n-- |
연산 진행 후 n 값을 1 감소시킴 |
논리 연산자
- 논리식을 판단해서 true와 false를 결정한다.
| 논리 연산자 |
설명 |
| && |
논리 AND 연산. 논리식이 모두 true일 때 true 값을 반환 |
| || |
논리 OR 연산. 논리식 중 하나라도 true일 때 true 값을 반환 |
| ! |
논리 NOT 연산. 논리식 결과가 true일 때 false 값을, 결과가 false일 때 true 값을 반환 |
비트 연산자
- 사진 자료 : https://www.tcpschool.com/c/c_operator_bitwise
- 논리 연산자와 유사하지만 비트(2진수) 단위의 연산만 가능하다.
- 정수값을 비트(2진수)로 환산하여 각 자리 수를 비교하고, 결과값을 정수로 반환한다.
- 비트(2진수)로는 음수를 표현할 수 없기 때문에, 비트의 맨 앞자리 수의 표현을 부호의 표현으로 쓴다.
- int는 4 byte = 32 bit이므로, 32 bit의 맨 앞자리의 bit가 부호의 표현이다.
- 0 -> 양수, 1 -> 음수
| 비트 연산자 |
설명 |
| & |
논리 AND 연산, 두 항이 모두 true일 때 true 값을 반환 |
| | |
논리 OR 연산, 두 항 중 하나라도 true일 때 true 값을 반환 |
| ^ |
논리 XOR 연산, 두 항이 다르면 true, 같으면 false |
| ~ |
논리 NOT 연산, 참을 거짓으로, 거짓을 참으로 체크. -(값+1)을 반환 |
| << |
비트를 왼쪽으로 이동 |
| >> |
비트를 오른쪽으로 이동 |
삼항 연산자
- 피연산자를 3개 가지며, 조건식의 결과값이 참이면 첫 번째 반환값을, 결과값이 거짓이라면 두 번째 반환값을 반환한다.
- Java와 JavaScript 등에서도 사용할 수 있으며, 짧은 if-else문을 대체하여 사용할 수 있다.
조건식 ? 반환값1 : 반환값2
쉼표 연산자
- 두 연산식을 하나의 연산식으로 표현하거나, 둘 이상의 인수를 함수로 전달할 때 사용한다.
int a = 1, b = 2;
printf("%d %d", a, b);
sizeof 연산자
- 피연산자의 크기를 byte 단위로 반환한다.
- 피연산자로 타입뿐만 아니라 변수나 상수를 전달 받을 수 있다.
int a = 1;
printf("%d", sizeof(a));
포인터 연산자
- 포인터와 연관된 연산자이다.
- 주소 연산자
& : 변수 이름 앞에 사용하여 해당 변수의 주소값을 반환한다.
- 참조 연산자
* : 포인터의 이름이나 주소 앞에 사용하여 포인터가 가리키는 주소에 저장된 값을 반환한다.
int n = 100; // 변수 선언
int *a = &n; // 포인터 선언